/*
 * Copyright (c) 2008, Xiong Yingfei, the University of Tokyo
 * All rights reserved.
 */
package ac.jp.u_tokyo.SyncLib;


public interface Mod<T>  {

	T apply(T value);

	boolean isConflict(Mod<T> m);
	
	Mod<T> merge(Mod<T> latter);
	
	Mod<T> subtract(Mod<T> subtrahend);
	
	public abstract Mod<T> getInverse(T value);

	public abstract T inPlaceApply(T value);

}

